home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Hacks / Hacks ’97 / NewsTicker / source code / Internet Code / BeachBall.cp next >
Encoding:
Text File  |  1997-06-12  |  1.6 KB  |  71 lines  |  [TEXT/CWIE]

  1. /*------------------------------------------------------------------------------
  2. #
  3. #    NewsTicker, my Hack for 1997
  4. #
  5. #    BeachBall.cp    -    Just a simple class to spin the beach ball while waiting
  6. #
  7. ------------------------------------------------------------------------------*/
  8.  
  9. #include     "BeachBall.h"
  10.  
  11. #define kBeachBallIntervalInTicks                2
  12.  
  13.  
  14. BeachBall::BeachBall(short firstCursorID,
  15.                     short numCursors,
  16.                     short resFileRefNum)
  17.                     :
  18.                     mResFileRefNum(resFileRefNum),
  19.                     mFirstBeachBallCursorID(firstCursorID),
  20.                     mNumBeachBallCursors(numCursors),
  21.                     mBeachBallIntervalInTicks(kBeachBallIntervalInTicks),
  22.                     mCurrentBeachBallCursorID(firstCursorID),
  23.                     mTicksAtPrevBeachBall(0)
  24.     {
  25.     }
  26.     
  27.     
  28. BeachBall::~BeachBall()
  29.     {
  30.     InitCursor();
  31.     }
  32.     
  33.     
  34. void BeachBall::Idle()
  35.     {
  36.     unsigned long        currentTicks;
  37.     CCrsrHandle        hColorCursor;
  38.     CursHandle            hCursor;
  39.     Cursor                cursor;
  40.     short                prevResFile;
  41.     
  42.     currentTicks = TickCount();
  43.     if (currentTicks < mTicksAtPrevBeachBall + mBeachBallIntervalInTicks)
  44.         return;
  45.         
  46.     mTicksAtPrevBeachBall = currentTicks;
  47.     if (mCurrentBeachBallCursorID >= mFirstBeachBallCursorID + mNumBeachBallCursors)
  48.         mCurrentBeachBallCursorID = mFirstBeachBallCursorID;
  49.     else
  50.         mCurrentBeachBallCursorID++;
  51.         
  52.     prevResFile = CurResFile();
  53.     UseResFile(mResFileRefNum);
  54.     hColorCursor = GetCCursor(mCurrentBeachBallCursorID);
  55.     if (hColorCursor)
  56.         {
  57.         SetCCursor(hColorCursor);
  58.         DisposeCCursor(hColorCursor);
  59.         }
  60.     else
  61.         {
  62.         hCursor = (CursHandle)GetResource('CURS', mCurrentBeachBallCursorID);
  63.         if (hCursor)
  64.             {
  65.             cursor = **hCursor;
  66.             ReleaseResource((Handle)hCursor);
  67.             SetCursor(&cursor);
  68.             }
  69.         }
  70.     UseResFile(prevResFile);
  71.     }